Universal Serial Bus is a standard peripheral interface for attaching personal computers to a wide variety of devices: e.g. digital telephone lines, monitors, modems, mice, printers, scanners, game controllers, keyboards and other peripherals. USB thus replaces existing interfaces such as the RS-232C serial ports, parallel ports, PS/2 interface and game/MIDI ports.
In accordance with USB, all attached devices connect to a personal computer through a single connector type using a tiered-star topology. A host controller of the USB interfaces with the host processor inside the personal computer. A USB system has only one host controller, which controls all accesses to USB resources and monitors the bus's topology. A USB hub provides USB attachment points for USB devices. A USB hub is shown in FIG. 1. The host controller includes a root hub, but a USB system can include other hubs that provide easy plug-in points for peripheral devices.
In particular, the USB hub is responsible for transferring data both upstream and downstream. All data transfers occur between the host (i.e., the personal computer) and the individual peripheral devices. The host is always at the root of the tree, and the devices are on leaves of the tree. A hub resides at each intersection. As shown in FIG. 2A, when the host transfers data to a device, data is transferred downstream through all hubs, from an upstream port (shown as Port 0 in FIG. 2A) to all non-disabled downstream ports (shown as Port 1 in FIG. 1) to all other hubs and devices. On the other hand, as shown in FIG. 2B, when data is transferred from a device to the host, the transfer occurs upstream only on the direct path to the host. A device is only allowed to transmit data only upon receipt of a special data packet, called a token. Devices may also be implemented to include hub functionality.
During a data transfer (from either the upstream port or a downstream port), the hub locks out all other data transmissions on any other port of the hub. Furthermore, conventionally, the hub has no inherent token detection capability. Thus, the hub essentially trusts that a packet received is valid, and the packet is directed upstream if detected on a downstream port, or downstream if detected on the upstream port. The detection of a packet by the hub must occur very quickly so that the hub can determine the data direction. According to the USB standard, data must be repeated by a hub from an input port to an output port in less than 40 ns. Thus, direction detection of a packet must occur as soon as possible upon detection of the first non-idle symbol of the packet. Only after the transfer direction is determined can the data packet be interrogated for validity. If the data packet is valid, the packet is transferred until an End-of-Packet symbol is detected, at which time the connection is torn down and detection of the next data packet is anticipated.
But, because the hub has no inherent token detection capabilities, a noise event occurring on one of the downstream ports cannot be distinguished from the beginning of a bona fide upstream data transfer, and any subsequent upstream data transfer from the downstream port will be blocked by the hub in response to the noise event. In addition, upstream data transfers on all upstream hubs will also be blocked. This "block" condition will persist until the end of the current (1 ms) frame period, at which time the currently selected port will be disabled, and transfers to and from any device in the downstream branch of this hub port will be disabled until management software intervenes to re-enables the entire connection.